package br.com.certificacao.Conjuntos.treeset;

import java.util.Set;
import java.util.TreeSet;

/*
 * Correcao da classe Celular para usar corretamente o metodo compareTo da interface Comparable sobrescrevendo, como e obrigatorio, os metodos
 * equals e hashCode de maneira correta, neste caso determinei que a duplicidade deve ser eliminada pelo numero de serie do aparelho.
 * Se no metodo compareTo eu usar o fabricante para comparacao havera duplicidade de dados no resultado.
 * Saida usando a ordenacao por fabricante:
 * 
 * [Fabricante: Motorola
Modelo: A19
Numero de Serie: 222
, Fabricante: Nokia
Modelo: M15
Numero de Serie: 123
, Fabricante: Samsung
Modelo: M15
Numero de Serie: 222
]
 */
public class Celular2 implements Comparable{
	String fabricante;
	String modelo;
	Integer numSerie;
	
	public Celular2(String fabricante, String modelo, int numSerie){
		this.fabricante = fabricante;
		this.modelo = modelo;
		this.numSerie = numSerie;
	}
	public boolean equals (Object o){
		if(((Celular2)o).modelo==this.modelo)
			return true;
		return false;
	}
	public int hashCode(){
		return numSerie;
	}
	
	public int compareTo(Object c){
		return this.numSerie.compareTo(((Celular2)c).numSerie);
	}
	public String toString(){
		return "Fabricante: " + fabricante + "\n" + "Modelo: " + modelo + "\n" + "Numero de Serie: " + numSerie + "\n";
	}
	public static void main(String[] args) {
		Set s = new TreeSet();
		s.add(new Celular2("Aokia", "x12", 330));
		s.add(new Celular2("Zokia","M15",123));
		s.add(new Celular2("Motorola","A19",222));
		s.add(new Celular2("Samsung","M15",222));		
		System.out.println(s);
	}

}
